One or more aspects relate, in general, to processing within a computing environment, and in particular, to improving such processing.
In a multiprocessing computing environment, multiple processing units, such as central processing units (CPUs) or cores, are connected to share access to common storage, such as common main storage locations. The storage hierarchy across the configuration may include various levels of caches local to each processing unit, various levels of caches shared among several processing units, and main storage. When a processing unit is to update a storage location, a line of storage is transferred to the processing unit by the storage hierarchy, and the line is held exclusively within a cache level that is local to the processing unit performing the update. While a line of storage is held exclusively by a processing unit, other processing units are not permitted to update or read that line of storage, until after the line is released and no longer held exclusively by any processing unit.
Processing unit features intended to enhance individual processing unit performance, such as pipelining, superscalar, out-of-order execution, and branch prediction, may result in speculative memory requests. A speculative request is one that may or may not be required to complete a particular program path. The conditions determining whether or not a request is required have not been resolved at the time the speculative request is initiated.